﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace QuDao.Api
{
    /// <summary>
    /// 二维码生成参数数据模型
    /// </summary>
    public class QrCodeModel
    {
        /// <summary>
        /// 二维码文本内容
        /// </summary>
        public string Text { get; set; }

        /// <summary>
        /// 是否对二维码文本内容加密，默认false
        /// </summary>
        public bool IsEncrypt { get; set; } = false;

        /// <summary>
        /// 数据纠错级别，默认‘M’
        /// </summary>
        /// <remarks>
        /// 数据纠错级别定义
        /// <para/>
        /// L - 最高允许7%的数据损失
        /// <para/>
        /// M - 最高允许15%的数据损失，默认推荐使用该等级
        /// <para/>
        /// Q - 最高允许25%的数据损失，如果需要内嵌LOGO的话，建议使用这个等级
        /// <para/>
        /// H - 最高允许30%的数据损失，内嵌LOGO并且内容比较少的情况可以考虑
        /// </remarks>
        public char EccLevel { get; set; } = 'M';

        /// <summary>
        /// 绘制每个黑白模块的像素大小，默认20
        /// <para/>
        /// 这个数值乘以29就是绘制白色边框后的二维码图片大小
        /// <para/>
        /// 这个数值乘以21就是不绘制白色边框后的二维码图片大小
        /// </summary>
        public int PixelsPerModule { get; set; } = 20;

        /// <summary>
        /// 以十六进制表示(例如 #000000)的深色/黑色模块的颜色
        /// </summary>
        public string DarkColorHtmlHex { get; set; } = "#000000";

        /// <summary>
        /// 以十六进制表示(例如 #ffffff)的浅色/白色模块的颜色
        /// </summary>
        public string LightColorHtmlHex { get; set; } = "#ffffff";

        /// <summary>
        /// 是否将二维码图片转成Base64格式输出，默认true，false表示返回二维码图片路径
        /// </summary>
        public bool IsBase64 { get; set; } = true;

        /// <summary>
        /// 是否在二维码图片中间内嵌LOGO图标，默认false
        /// </summary>
        public bool EmbedLogo { get; set; } = false;

        /// <summary>
        /// 如果为真，则在整个二维码周围绘制一个白色边框
        /// </summary>
        public bool DrawQuietZones { get; set; } = true;
    }
}
